B12【动态路由】IS-IS
前言
本文将介绍另一项动态路由协议:IS-IS,全称intermediate system to intermediate system(中间系统到中间系统)。
它与OSPF一样,都属于链路状态协议,都是设备之间通过Hello报文发现彼此、建立邻居、交互链路状态信息、同步LSDB、最后通过SPF算法计算路由信息,并且对整个网络会进行区域划分以减少LSDB的规模,降低对网络资源与设备性能的影响。
拓展一下,我们都学习过OSI七层网络模型,但是目前我们使用的是TCP/IP。这两种协议栈是不相同的,IS-IS原本是使用于OSI协议栈中,而我们要学习的是被引进到TCP/IP中的IS-IS。
而所谓的IS(intermediate system,中间系统)指的是OSI中的路由器,因此IS-IS的原意为实现IS之间动态路由信息交互。
在IS-IS中,交互的链路状态信息,被称为LSP(link-state packet),对于OSI模型来说,IS-IS所处层级的报文就叫做packet。
目前IS-IS主要应用于运营商网络中,所以说实话,各位可能不太会接触到,一般的企业网还是以OSPF为主(甚至是RIP与静态)。因此本文不会介绍的太过细致,尤其是命令配置方面,真的有需要,还请以产品文档为准。
因为IS-IS与OSPF有很多相似处,并且本文是在OSPF之后出的,所以我就默认各位都学习过OSPF了,将会与OSPF进行参照比较来介绍IS-IS。同时这也是一个复习巩固ospf知识点的机会。
基本原理
与OSPF的大致相同点,我们在前文简单描述过,对于链路状态信息以及LSDB是什么的内容则在介绍OSPF的文章中提到过了。
因此我们不再赘述身为链路状态协议是如何通过链路状态信息交互,最后得到路由的基础过程。
先着重介绍IS-IS与OSPF的不同之处,概念术语抛的差不多之后再介绍IS-IS的通信过程。
个别部分一样是先介绍简单概念,后面另起一小节详细介绍
路由器类型
在IS-IS中,对路由器进行了两种级别的划分,分别是level-1与level-2。值得注意的是路由器可以同时是level-1和level-2,对于这种路由器,我们称之为level-1-2路由器。
我们可以理解为level-2为OSPF中的骨干路由器,level-1为OSPF中的非骨干区域路由器,而level-1-2则是ABR。
Level-1 路由器:
- 在 IS-IS 中,Level-1 路由器负责在同一个区域(Level-1 区域)内进行邻居关系建立与链路状态信息交互。
- level-1路由器只能与level-1路由器建立邻居与链路状态信息交互。
- 类似地,在 OSPF 中,非骨干路由器负责在同一个区域内进行路由选择。
Level-2 路由器:
- Level-2 路由器在 IS-IS 中负责在不同区域之间进行路由选择,处于连接不同 Level-1 区域的 Level-2 区域。
- level-2路由器只能与level-2路由器建立邻居与链路状态信息交互。
- 在 OSPF 中,骨干路由器(Backbone Router)扮演类似的角色,位于连接不同区域(OSPF 区域)的骨干区域。
Level-1-2 路由器:
- Level-1-2 路由器是同时具有 Level-1 和 Level-2 路由器功能的路由器
- 既可以在 Level-1 区域内进行邻居建立,也可以在 Level-2 区域之间进行邻居建立。
- 在 OSPF 中,ABR(Area Border Router)也具有类似的功能,连接不同 OSPF 区域并负责在它们之间传递链路状态信息。
类型总结
可以说,IS-IS 中的 level-1、level-2 和 level-1-2 路由器与 OSPF 中的非骨干路由器、骨干路由器和 ABR 在功能上有一定的相似性,都是为了实现在不同区域之间的路由选择和信息传递。
系统ID
再次提醒,IS-IS协议诞生于OSI协议栈中,“中间系统”这个叫法就是TCP/IP中的“路由器”。
系统ID(system ID)相当于OSPF中的router-id,都是表示区域内的某台路由器。
与router-id一样,IS-IS的系统ID也要求保证在区域内的唯一性。
巧的是,IS-IS是工作于二层,二层的MAC地址本质也是具备全局唯一性,因此,系统ID在不手动配置时,会默认使用MAC地址。
也因此,系统ID为48位二进制,与MAC地址长度一致;也与MAC地址一样默认使用十六进制表示。
区域
区域 id
IS-IS使用OSPF中类似area的概念,但不同的时,IS-IS的area长度是可变的,同时,还是使用十六进制的方式书写。
一般我们描述的区域id都是带有“49.”的前缀,实际上这个49并不属于区域id,49在OSI协议栈中用于表示私有地址。
值得注意的是,IS-IS中,区域的边界并不是设备。
在OSPF里,假设R2的两端:R1属于area0,R3属于area1。
- 那么我们会配置R2的一个接口属于area0,与R1相连;
- R2的另一个接口属于area1,与R3相连。
- 最终结果就是R2处于area0与area1的边界。
而在IS-IS中,我们仅能配置设备属于单个区域,对于level-2路由器之间来说:
- 首先考虑R2究竟是要配置为R1所处的区域还是R3所处的区域。
- 假设R2与R1配置为同一区域,那么R2与R3会进行跨区域邻居建立。
- 最终结果就是区域的边界是处于R2与R3之间的链路上。
区域划分
刚刚提到的情景说明,强调了“对于level-2路由器之间来说 ”,这是因为在IS-IS中,有严格的层次划分。
IS-IS使用两级区域层次结构:Level 1和Level 2。
level-1层次类似于OSPF的常规区域,而且近似于totally NSSA区域;
level-2层次类似于OSPF的骨干区域,值得注意的是L2层次支持跨区域邻居建立。
老实说,我认为叫成level-1区域和level-2区域对于初学者来说很容易混淆概念。个人认为,应该叫level-1层次、level-2层次,所以本文会采用这个叫法。
level-1路由器负责区域内路由,level-1路由器只能与同区域的level-1路由器建立邻居关系。
level-2路由器负责区域间路由,level-2可以跨区域,或者说无视区域id,与其他level-2路由器建立邻居关系。
也因此,才会存在level-1-2路由器,它即属于level-1路由器,又属于level-2路由器。可以使用它来连接level-1层次与level-2层次,这相当于OSPF中的ABR角色。
小结
对于IS-IS来说,区域仅仅只是标识,而真正划分骨干区域与常规区域的是level层次。
作为骨干的level-2层次可以包含多个区域。
作为常规的level-1层次需要经过level-1-2路由器与作为骨干的level-2层次相连,最后做到跨区域路由。
NET地址
系统ID只要求区域内唯一,也就是不同区域内的两台路由器实际可以用同一个系统ID(这在OSPF中也是如此)。
而NET地址则是全IS-IS网络中对路由器的唯一标识符,它由区域ID+系统ID+NSAP选择器(默认为00)组成。
NET=network entity title,网络实体名称
这个概念在OSPF中是不存在的。
事实上,NET地址起源于OSI协议栈中NSAP地址的概念(相当于TCP中的套接字——ip地址+端口号)
NET的示例: 49.0001.1921.6800.1001.00
请注意,这是一个十六进制的数。
- 49: AFI (Authority and Format Identifier),表示这是一个私有地址。(起源于OSI协议栈)
- 0001: 区域ID
- 1921.6800.1001: 系统ID
- 00: NSAP地址中表示上层协议类型的字段,IS-IS不需要,故默认为00。
总的来说,我们只关注中间的区域ID与系统ID即可。
只不过在DIS生成的伪节点上,会修改NSAP选择器字段为“01”,有关DIS与伪节点的概念稍后就介绍。
另外,值得注意的是,区域ID是可变长的,所以推算区域ID是从右往左推——去掉2位的NSAP选择器,再去掉12位系统ID(以16进制算),得到的就是区域ID。
比如49.0000.0000.00001.00的区域ID为49
49.0000.0000.0000.00001.00的区域ID为49.0000
当然,在以太网中,实际开头不需要为49。10.0000.0000.0001.00也是没错的。
度量值
IS-IS与OSPF一样都是使用cost值作为度量值,不同的是IS-IS是一个完全独立的数值,默认为10。
在OSPF中,cost值是链路带宽的值计算过来的。
所以在不手动修改cost值的情况下,IS-IS的度量值反而更类似于RIP的度量值(跳数)。
不过实际使用中,个别厂商会在自家设备上对IS-IS协议进行魔改,提供自动计算cost的功能。(这个本文不做讨论,可以查看相应的产品文档)。
协议报文
与OSPF报文采用网络层的IP封装不同,IS-IS的报文采用数据链路层封装,在以太网中,我们称数据链路层的报文为协议数据单元PDU。
IS-IS工作于二层的好处就是封装解封装效率高。
IS-IS使用了以下几种PDU进行协议通信。
IIH(IS-IS Hello)
相当于OSPF中的hello报文,一样是用于建立与维护邻居关系。
在IS-IS中存在三种IIH PDU:level-1 LAN IIH、level-2 LAN IIH以及P2P IIH。
前两者用于广播型网络(如以太网):如果设备为level-1,则它仅收发level-1 IIH;如果设备为level-2,则它仅收发level-2 IIH;level-1-2设备则两者都收发。
而P2P IIH则用于P2P类型的网络中。
LSP(Link-State Packet)
IS-IS使用LSP承载链路状态信息,LSP是一个完整的在链路上传播的报文,因此它类似于OSPF中的LSU(包含其中的多种LSA)。
LSP仅存在level-1 LSP与level-2 LSP两种,并不像OSPF中分了多种LSA。
CSNP(Complete Sequence Number PDU)
CSNP意为完全序列号报文,也是分level-1与level-2两种,用于在不同的IS-IS邻居关系中。
CSNP类似于OSPF中的DD报文,用途为描述设备中所有的LSP摘要,确保设备之间LSDB的同步。
PSNP(Partial Sequence Number PDU)
PSNP意为部分序列报文,也是分level-1与level-2两种,PSNP与CSNP的不同之处在于PSNP只包含部分LSP摘要信息,PSNP主要用于请求LSP更新。这相当于OSPF中的LSR报文。
个别情况下,还会作为确认收到更新LSP报文的回应报文,即OSPF中的LSAck。具体内容后续介绍。
提示
LSP并不只在收到PSNP报文请求后才会发布。LSP会周期性的发布,即使没有明显的网络变化。
这个周期通常被称为 “LSP 刷新间隔”,默认值通常为 900 秒(最大生存时间的60%)。
LSP 刷新的目的:
- 确保 LSP 信息的新鲜度。
- 防止 LSP 因超时而被删除。
- 允许新加入的路由器获取完整的拓扑信息。
当然,除了周期性刷新,拓扑变化也会立即触发 LSP 更新。
DIS与伪节点
DIS
在IS-IS中,每个网段会选举一台设备作为DIS(指定中间系统),与OSPF的DR很相似,但有一些重要区别。
选举:
- 基于接口优先级和**系统ID(通常是路由器的MAC地址)**。
- 优先级最高的路由器成为DIS。如果优先级相同,则系统ID最高的成为DIS。
- 没有备份DIS的概念(与OSPF不同)。当DIS发送故障,立即开始选举新的DIS。
- DIS具有抢占性,即网络中接入优先级更高的设备时,该设备会夺取DIS的名头,成为新的DIS。
职责:
- 定期发送CSNP(完整序列号PDU)。
- 为广播网络创建和维护伪节点LSP。
- 在网络中泛洪LSP。
其他路由器与DIS的关系:
- 所有路由器都与DIS建立邻接关系。
- 其他路由器通过DIS同步LSDB。
报文交换:
- DIS定期(默认每10秒)在广播网络上发送CSNP。
- 其他路由器如果发现CSNP中列出的LSP是自己没有的,会发送PSNP请求这些LSP。
- DIS负责响应PSNP请求,发送相应的LSP。
伪节点
还有一个很特别的点在于,IS-IS中的DIS虚拟出的伪节点(Pseudonodes):
伪节点的NET地址是在DIS的NET地址最后位从00改为01。具体我们之后以拓扑进行详细介绍时看一下LSDB表内信息。
目的:
- 简化拓扑,减少网络中LSP的数量,每个路由器只需要发布描述它邻居为伪节点的LSP,而不需要发布他与所有其他邻居路由器的关系。
其他路由器与伪节点的关系:
- 伪节点代表整个广播网段。
- 每个路由器(包括DIS)都在其LSP中声明与伪节点的连接。
- 伪节点LSP由DIS生成和维护,包含了所有连接到该网段的路由器信息。
报文交换:
- 路由器不直接与伪节点交换报文。
- 路由器通过DIS了解伪节点的信息。
小结
DIS负责管理网段,而伪节点简化了网络拓扑的表示。
这种设计大大减少了需要在网络中传播的LSP数量,提高了协议的整体效率。
可以说伪节点与OSPF的type-2 LSA很相似:
- 普通路由器在OSPF中是与DR建立邻接关系,最后由DR发布type-2 LSA描述DR所处网段一共有多少路由器(与我相连,邻居是我)。
- 普通路由器在IS-IS中则是背地里与所有路由器都建立邻接关系(包括伪节点),但是表面表示为只与伪节点建立邻接关系,最后由DIS发布的伪节点LSP中描述了DIS所处网段一共有多少路由器(与伪节点、也就是我相连,邻居是我)。
邻居建立过程
广播网络
如图,假设两台level-1在使用千兆以太网连接在一起,都在GE0/0/0口激活IS-IS。
由于R1是level-1路由器,因此其发送的hello报文为level-1 IIH。该报文中记录了R1的系统ID以及多个TLV,其中一个TLV记录了R1的区域ID。
有关TLV是啥,我们稍后介绍。
R2在其GE0/0/0口接收到R1的level-1 IIH报文,进行相应的检查(区域是否一致等),检查通过后,R2在其邻居表中记录下R1,并将状态标记为initial(初始化)。
R2发布一个level-1 IIH报文,报文内包含了系统ID、区域TLV,以及自己已记录邻居设备信息(R1的TLV与MAC地址)。
R1收到R2的报文,了解R2已经发现了自己,则将R2记录在邻居表中,并把状态设置为up。
R1也发布一个level-1 IIH报文,报文内包含了系统ID、区域TLV,以及自己已记录邻居设备信息(R2的TLV与MAC地址)。
待R2收到R1的报文,了解R1也发现了自己,则将邻居表中R1的状态也记录为up。
R1与R2彼此状态都为up,我们就认为邻居关系建立起来了。
因为是广播网络,需要选举DIS,所以在邻居关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。
Hello报文中包含Priority字段(优先级),优先级值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC地址较大的被选举为DIS。(与STP的选举优先级很类似)
以上例子是level-1路由器之间的邻居建立关系;至于level-2路由器,形式也是一样的,只不过level-2路由器是通过另一个组播地址,通过level-2 IIH报文进行关系建立。
可以说,这与OSPF的int状态、2-way状态是一样的。
但请注意,IS-IS并没有像OSPF那样分邻居与邻接两种关系,对IS-IS来说只有邻居这一种关系。
P2P网络
在P2P网络中,IS-IS的邻居建立过程存在两种方式:两次握手及三次握手。
两次握手方式不存在确认机制,只要设备在接口收到P2P IIH,并且检查通过后,就直接当作该邻居存在,状态设置为up。(因为是P2P网络,对端只可能存在一台设备)
三次握手方式则需要经过一轮确认(类似广播网络中需要在报文中发现自己的系统ID才确定状态可以设置为up)。
两次握手
- R3在S1/0/0口激活了IS-IS,检查到为P2P网络,于是在该接口上发送P2P IIH报文。该hello报文中包含了R3的系统ID、区域TLV。
- R4也激活了IS-IS,并收到了R3的P2P IIH,则认为该点对点网络对面的设备为R3,并且链路通的(毕竟收到了该报文),于是邻居表中填写上R3的信息,并标记为up。
- 反过来,对R3来说也是如此,收到R4的P2P IIH报文后,也标记为up。
三次握手
三次握手机制中,新增了一个特殊的TLV:P2P三向邻接TLV。
R3在S1/0/0口激活了IS-IS,检查到为P2P网络,于是在该接口上发送P2P IIH报文。该hello报文中包含了R3的系统ID、区域TLV以及一个三向邻接TLV。由于当前R3设备并没有在该P2P网络中发现其他设备,则该邻接TLV内的邻接状态设置为Dowm
R4收到R3的P2P IIH报文,检查通过后,在其邻居表中添加R3的信息,并将状态设置为Initial。
R4发送一个P2P IIH报文,包含R4的系统ID、区域ID以及记录了邻居系统ID与状态为initial的邻接TLV。
R3收到R4的报文,检查后还发现对方发来的报文包含了自己的信息,不过由于报文内的邻接状态为initial,R3暂时不认为邻接关系建立完毕。
邻接状态为initial意味着R4并没有收到R3的进一步确认信息;对于R3来说便是没有确认到“ R4 是否已经收到并处理了 R3 的信息”。
R3在邻居表内只会将R3的邻居状态设置为initial。
但当R3 发送下一个 P2P IIH 报文时,在这个新的 IIH 报文中,R3 会在三向邻接 TLV 中将 R4 的状态标记为 Up。
这表示 R3 已经收到并确认了 R4 的存在,并准备建立完整的邻接关系。
R4收到信息后,发现了自己的信息,且邻接状态为up,因此邻居表中对R3的状态修改为up,同时发送一个标记R3邻接状态为up的P2P IIH报文。
R3收到邻接状态为up的报文,这时才将邻居R4的状态设置为up。
自此,双方才认为邻接关系建立完毕。
从严格的报文交换角度来看,这个过程涉及四次报文交换。然而,它被称为”三次握手”的原因如下:
状态变化的关键点:
- 第一次:初始 Down 状态
- 第二次:转为 Initial 状态
- 第三次:最终确认为 Up 状态 这三个关键的状态变化点构成了”三次握手”的核心。
功能视角:
- 第一次:通告自己
- 第二次:确认看到对方并通告自己
- 第三次:确认双方都已互相看到 从功能上看,这三步完成了必要的信息交换。
最后一次交换的作用:
第四次报文交换主要是为了同步最终状态,可以看作是对第三次握手的确认。
在上述例子的第二次交换时——R3收到R4的报文后,本可以设置为up;再加上第三次交换——R4收到R3的报文,状态更新为up。算起来正好是三次握手即可互相标记为up。
在某些描述中,这可能被视为握手过程完成后的一个额外步骤。
简化的概念模型:
- 称为”三次握手”可能是为了简化理解和描述,突出过程中的关键步骤。
邻居建立后
广播网络
DIS会周期性地泛洪CSNP(默认10秒一次),以确保该网络中地IS-IS设备拥有一致地LSDB。
其他设备收到该CSNP后会将其包含地LSP摘要与自己地LSDB进行对比,如果一致,则忽略该CSNP。
而如果本地LSDB缺少了部分LSP,则向DIS发送PSNP请求这些LSP地详细信息;
DIS收到该PSNP后,将相应地LSP发送给对方。
设备收到DIS发来地LSP后,无需向DIS回复确认收到信息。(毕竟之后还会收到DIS地周期CSNP,如果没收到/还是缺,再次申请即可)
P2P网络
P2P 网络中不需要DIS,CSNP也仅在邻居关系建立完成时发送一次用于确定要申请更新的LSP,后续不会周期性发布。
对于设备来说,在收到 LSP 后需要发送 PSNP 来确认收到的 LSP,以确保信息的完整性。
如果发送者一直没等到对方用于确认的PSNP,则会重传刚刚的LSP。
报文与LSDB详解
以下的介绍会在一个简单的拓扑上进行:R1与R2相连,网段为192.168.12.0/24,区域ID为10,都是level-1-2路由器,具体的IP地址主机位与系统ID就是R1为1、R2为2。
TLV介绍
TLV是对IS-IS报文中Type、Length、Value这三个字段的合称。
type表示该TLV的类型、length表示该TLV的整体长度、value存储传递的信息。
在IS-IS报文中,会存在多个TLV,数量不做限制。可以理解为是将ospf中多种LSA类型的机制理念进一步扩大利用。
一些常见的TLV如下:
TLV Type | 名称 | 被应用于以下PDU类型中 |
---|---|---|
1 | Area Addresses,区域地址 | IIH、LSP |
2 | IS Neighbors(LSP),IS邻居(LSP) | LSP |
6 | IS Neighbors(MAC Address),IS邻居(MAC 地址) | LAN IIH |
8 | Padding,填充(补足报文整体长度,内容为空白) | IIH |
9 | LSP Entries,LSP条目(摘要信息) | SNP |
10 | Authentication Information,认证信息 | IIH、LSP、SNP |
128 | IP Internal Reachability Information,IP内部可达性信息(包含网段与到达该网段的cost值) | LSP |
129 | Protocols Supported,支持的协议 | IIH、LSP |
130 | IP External Reachability Information,IP外部可达性信息(包含网段与到达该网段的cost值) | L2 LSP |
131 | Inter-Domain Routing Protocol Information,跨域路由协议信息 | L2 LSP |
132 | IP Interface Address,设备接口的IP地址 | IIH、LSP |
SNP代指CSNP与PSNP。
请记住,字段名称是我们人为理解的,对计算机来说,它们传递的是直接的数据信息,不包含字段名称的。
比如说,在抓包软件中,value这个字段的名称在不同的报文中会被称为不同的字段名称。以下是一个hello中的抓包信息:
通过这个抓包我们也能理解报文中TLV的结构。
报文特有头部省略了。

IIH (hello报文)
我们直接以上面的抓包的 IS-IS Hello 报文信息,进行介绍:
也就是上图的白色背景的内容,灰色背景的内容这里不介绍。
- hello报文头部信息:
- Circuit type: 表示电路类型,这里是 Level 1 和 Level 2。
- SystemID {Sender of PDU}: 发送此 PDU 的系统 ID,为 0000.0000.0001。
- Holding timer: 保持计时器,设置为 30。
- PDU length: 该PDU 长度为 1497 字节。
- Priority: 路由器优先级,优先级为 64。(用于选举DIS)
- SystemID {Designated IS}: DIS的 系统ID 为 0000.0000.0001.01。
- 以下为各TLV
- Area address(es): 区域地址,类型为 1,长度为 2。
- IP Interface address(es): IP 接口地址,类型为 132,长度为 4。
- Protocols Supported: 支持的协议,类型为 129,长度为 1。
- Restart Signaling: 重启信令,类型为 211,长度为 3。
- Multi Topology: 多拓扑,类型为 229,长度为 2。
- Padding: 填充字段,用于填充报文,类型为 8,长度为 255 和 161。目的是将hello报文的长度补充到1497字节。
LSP报文
该图为LSP报文的抓包信息。其详细内容如下:
根据提供的抓包信息,以下是对其中一些字段的解读:
- LSP头部信息:
- PDU length: PDU 的长度为 54 字节。
- Remaining lifetime: 剩余生存时间为 1198。
- LSP-ID: LSP 的 ID 为 0000.0000.0002.00-00。
- Sequence number: 序列号为 0x00000002。
- Checksum: 校验和为 0x6d9a,校验正确。
- Type block: 类型块,该报文表示的 IS 类型为 Level 2。
- TLV信息:
- Protocols supported: 支持的协议,类型为 129,长度为 1。
- Area address(es): 区域地址,类型为 1,长度为 2,区域地址为 10。
- IP Interface address(es): IP 接口地址,类型为 132,长度为 4,IPv4 接口地址为 192.168.12.2。
- IP Internal reachability: IP 内部可达性信息,类型为 128,长度为 12,IPv4 前缀(网段)为 192.168.12.0/24,cost值为10。(图中未展开,展开后有详细的cost值)
LSDB
在R1上使用display isis lsdb命令检查LSDB摘要表。由于是level-1-2路由器,因此R1与R2不仅建立了level-1关系,也建立了level-2关系。
1 | [R1]display isis lsdb |
可以看到有三条LSP,其中第一条为自己,第二条为邻居,第三条为DIS(伪节点)。
我们可以进一步使用display isis lsdb LSP-ID verbose命令查看指定LSP的详细信息。
1 | [R1]display isis lsdb 0000.0000.0002.00-00 verbose |
我们也查看以下伪节点的详细信息,比较一下。
1 | [R1]display isis lsdb 0000.0000.0002.01-00 verbose |
可以看到伪节点的详细信息与前面表示R2的详细信息有很大的区别。伪节点的信息只包含了伪节点的邻居。
配置
正如前言所说,本文只做简单介绍,尤其是配置方面。本文只做基础的配置介绍,其他诸如静默端口、路由汇总、路由渗透、认证等等都不做介绍,请移步到产品文档观看。
基础配置
创建配置IS-IS进程
执行命令system-view,进入系统视图。
执行命令isis [ process-id ] ,创建IS-IS进程并进入IS-IS视图。
参数process-id用来指定一个IS-IS进程。如果不指定参数process-id,则系统默认的进程为1。
执行命令network-entity net,设置网络实体名称。
注意!该命令相当于给设备分配了区域与系统ID。
NET地址是全IS-IS网络中对路由器的唯一标识符,它由区域ID+系统ID+NSAP选择器(默认为00)组成
也别忘了:IS-IS在建立Level-2邻居时,不检查区域地址是否相同,而在建立Level-1邻居时,区域地址必须相同,否则无法建立邻居。
执行命令is-level { level-1 | level-1-2 | level-2 },设置设备的Level级别。
未指定时,设备的Level级别为level-1-2。
在接口启用IS-IS进程
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入接口视图。
执行命令isis enable [ process-id ],在该接口启用IS-IS功能,可选指定哪个进程。
配置该命令后,IS-IS将通过该接口建立邻居、扩散LSP报文。
由于Loopback接口不需要建立邻居,因此如果在Loopback接口下启用IS-IS,只会将该接口所在的网段路由通过其他IS-IS接口发布出去。
(可选)执行命令isis circuit-level [ level-1 | level-1-2 | level-2 ],设置接口的Level级别。
两台Level-1-2设备建立邻居关系时,默认情况下,会分别建立Level-1和Level-2邻居关系。如果只希望建立Level-1或者Level-2的邻居关系,可以通过修改接口的Level级别实现。
与RIP、OSPF不同,IS-IS在接口启用路由协议需要去接口下配置,是因为IS-IS工作在数据链路层,它并不感知IP地址,因此无法像其他路由协议那样通过“宣告”网段的方式去批量激活接口。
示例与路由引入
以该拓扑为例,其中R1、R2、R3、R4、R5为IS-IS网络,而R5连着一OSPF网络,其中存在R6与R7两台路由器。
IS-IS网络属于10.1.0.0/16网段的子网,OSPF属于192.168.0.0/16网段内的子网。
区域的划分如图中所示,其中左侧为level-1层级的区域,右侧为level-2层级的区域。
基础配置
所有路由器的配置如下所示:
1 | R1配置如下: |
1 | R2配置如下: |
1 | R3配置如下: |
1 | R4配置如下: |
1 | R5配置如下: |
1 | R6配置如下: |
1 | R7配置如下: |
完成以上配置后,IS-IS网络内的所有路由器都能互相访问,OSPF网络内的所有路由器也能互相访问。
路由引入
但IS-IS与OSPF网络之间还无法完全互通,需要在R5上配置路由引入。
1 | [R5]isis 1 |
配置完之后,我们可以检查R5的isis路由表:
1 | [R5]display isis route |
R5的isis路由表中出现了Redistribute Table(重定向表)一栏,包含了引入的OSPF路由。
还记得通信是双向的吗,虽然引入了OSPF路由,IS-IS网络内的路由器是拥有了OSPF网络内的路由信息,但OSPF中的路由器没有到IS-IS网络的信息。
因此,还得在R5上的ospf进程中,引入is-is路由。
1 | [R5]ospf |
在R6上检查是否引入成功(OSPF里,R5作为引入者,无法查看到)
1 | [R6]display ospf routing |
我们也去检查下IS-IS网络中R1的路由:
1 | [R1]display isis route |
1 | [R1]ping 192.168.56.6 |
可以发现没有问题,也能访问到。
结语
本文主要是让读者知道IS-IS的基础概念与基本原理,甚至能搭建一个“能通”的IS-IS网络;至于实际的报文细节、内部的处理与配置细节都大幅弱化了。
如果读者有兴趣想深入学习,建立在模拟器搭建IS-IS拓扑,在模拟器内检查各信息并配合抓包工具进行观察。
或者说去找专门的课程视频学习。
此外,本文介绍的是ipv4场景的IS-IS,ipv6场景的IS-IS以后有机会我们再介绍吧。
但实际工作中,估计几乎用不到。